Frequently, when a user requests to view large numbers of records displayed in a user interface, such as in response to a search request, the records are sorted in an order based on one or more sorting criteria and displayed in pages. Each of the pages displayed on a user interface may typically contain up to a predetermined maximum number of records, and the user may navigate between pages by selecting or activating links, buttons or other means that may be known to those of skill in the art. The maximum number of records that may be displayed on each page, and the sorting criteria, may be automatically set by the interface, or optionally set by the user.
When all of the data stored in each of the records to be displayed is static, paginating records is a simple and straightforward task. Records containing immutable data may be sorted according to one or more sorting criteria, divided into pages, and displayed page-by-page to the user. For example, where a user requests to view a set containing 157 records sorted by at least one sorting criteria, and a user interface may display a maximum of 50 records, a user may view three respective pages displaying records 1-50, 51-100 and 101-150, and a fourth page displaying records 151-157. To navigate from page to page, a user may select buttons or links reading “next 50,” or “previous 50,” to view and review each of the records contained in the set.
However, when at least some of the data stored in each of the records is dynamic, and subject to change, list pagination presents a challenging problem in that one or more records may escape review as a user advances from page to page, depending on the sort criteria chosen by the user. For example, where a set containing 38 records is sorted based on the time and date on which each record was last updated in an original list, and where records 1-10 of that set are displayed at time t0, a request to display records 11-20 of that set made at time t1 would skip a record if one of records 1-10 (e.g., record no. 7 of the original list) was updated between time t0 and time t1. Once record no. 7 of the original list is updated, and the request to display records 11-20 is received, the list of records would be reordered such that record no. 7 of the original list would immediately fall to the end of the sorted list and replace record no. 38 as the final record in the new list, while records 8-38 of the original list would advance forward to replace records 7-37 in the new list. Therefore, when the user requests to view records 11-20, the records displayed would correspond to the twelfth through twenty-first (12-21) records of the original list, and record no. 11 of the original list, which advanced forward to become record no. 10 of the new list, would not be displayed to the user.
The present invention is intended to overcome the aforementioned disadvantages of the prior art by providing an effective alternative to existing systems and methods for pagination, including search listing pagination of dynamic records.